In the information technology environment of today, much use is made of virtual computing. Virtual computing, in this application, includes the use of software systems that simulate the actions of hardware system. The use of virtual computing provides flexibility in the computing environment, by, among other things, allowing application designers to ignore, to some extent, the limitations and/or constraints that a particular native hardware system might otherwise impose on the application.
One form of virtual computing that has seen increased popularity is the virtualization hypervisor. A virtualization hypervisor uses virtual computing to allow multiple operating systems, called guests, to run on a single host computer. This allows a plurality of different operating systems and/or applications to be run concurrently by a plurality of different guests on the same piece of hardware. Each guest instance can be housed in a different virtual machine, providing isolation and encapsulation from other guest instances and giving each guest the illusion that it is utilizing the actual system hardware.
One challenge in the virtual computing environment, particularly in the area of virtualization hypervisors, comes in maximizing the limited hardware resources of the host computer system. For example, memory must be allocated to each guest in order for the guests to perform the functions that they need to perform. These functions may include such tasks as executing a particular application on a particular operating system using particular data, for example, each of which would need to be stored in the memory of the host. However, as more guests utilize more of the host system's memory, this resource can become scarce, requiring rationing of guests and/or memory usage per guest or requiring use of slower types of data storage.